﻿using AutoMapper;
using CodeSaude.Application.Interfaces;
using CodeSaude.Application.ViewModels;
using CodeSaude.Domain.Entities;
using CodeSaude.Domain.Interfaces.Service;
using System;
using System.Collections.Generic;

namespace CodeSaude.Application.Services
{
    public class AntecedenteApplicationService : BaseApplicationService, IAntecedenteApplicationService
    {
        private readonly IAntecedenteService _antecedenteService;

        public AntecedenteApplicationService(IAntecedenteService antecedenteService)
        {
            _antecedenteService = antecedenteService;
        }

        public void Add(AntecedenteViewModel antecedenteViewModel)
        {
            BeginTransaction();
            _antecedenteService.Add(Mapper.Map<AntecedenteViewModel, Antecedente>(antecedenteViewModel));
            Commit();
        }

        public void Dispose()
        {
            _antecedenteService.Dispose();
        }

        public IEnumerable<AntecedenteViewModel> GetAll()
        {
            return Mapper.Map<IEnumerable<AntecedenteViewModel>>(_antecedenteService.GetAll());
        }

        public AntecedenteViewModel GetById(int id)
        {
            return Mapper.Map<AntecedenteViewModel>(_antecedenteService.GetById(id));
        }

        public void Remove(AntecedenteViewModel antecedenteViewModel)
        {

            BeginTransaction();
            _antecedenteService.Remove(_antecedenteService.GetById(antecedenteViewModel.AntecedenteId));
            Commit();
        }

        public void Update(AntecedenteViewModel antecedenteViewModel)
        {
            BeginTransaction();
            _antecedenteService.Update(Mapper.Map<Antecedente>(antecedenteViewModel));
            Commit();
        }
    }
}
